// permission.ts
// 路由权限控制

import router from '@/router'
import { useAppStore } from '@/stores/appStore'
import { ElMessage } from 'element-plus'

// 白名单路由
const whiteList = ['/login']

router.beforeEach(async (to, from, next) => {
  // 获取应用状态
  const appStore = useAppStore()
  
  // 如果在白名单中，直接通过
  if (whiteList.includes(to.path)) {
    next()
    return
  }
  
  // 检查是否有token
  const token = appStore.token
  if (token) {
    // 如果已经登录且访问登录页，重定向到首页
    if (to.path === '/login') {
      next({ path: '/' })
      return
    }
    
    // 如果用户信息不存在，尝试获取用户信息
    if (!appStore.user) {
      try {
        await appStore.getUserInfo()
        next({ ...to, replace: true })
      } catch (error) {
        // 获取用户信息失败，清除token并跳转到登录页
        appStore.resetToken()
        ElMessage.error('登录已过期，请重新登录')
        next(`/login?redirect=${to.path}`)
      }
    } else {
      next()
    }
  } else {
    // 没有token，跳转到登录页
    next(`/login?redirect=${to.path}`)
  }
})

export default router